package com.CST.service.ys;

import com.CST.dto.ys.NumAndYardDTO;
import com.CST.dto.ys.YsBusinessBudgetDTO;
import com.CST.entity.ys.YsAccountDetail;
import com.CST.vo.ys.YsAccountDetailBusinessOrManageVO;
import com.CST.vo.ys.YsBusinessAccountVO;
import com.CST.vo.ys.YsManageAccountVO;
import com.CST.vo.ys.YsModifyRecordVO;
import com.github.pagehelper.PageInfo;

import javax.servlet.http.HttpServletResponse;

/**
 *  管理预算执行管理服务类
 *
 * @author cw
 * @since 2023-04-20
 */
public interface YsManageBudgetService {
    /**
     * 获取管理职能预算
     * @param dto 查询条件
     * @return list列表
     */
    YsManageAccountVO getManageBudgetList(YsBusinessBudgetDTO dto);

    /**
     * 新增
     * @param ysAccountDetail ysAccountDetail
     * @return result
     */
    Boolean insertManageBudget(YsAccountDetail ysAccountDetail);

    /**
     * 根据用友编号查询详情
     * @param id 查询条件
     * @return result
     */
    YsAccountDetailBusinessOrManageVO selectInfoByNum(Integer id);

    /**
     * 编辑
     * @param ysAccountDetail ysAccountDetail
     * @return result
     */
    Integer updateManageAccountByNum(YsAccountDetail ysAccountDetail);

    /**
     * 删除
     *
     * @param id 用友凭证号+院区
     * @return result
     */
    Boolean deleteByNum(Integer id);

    /**
     * 发布
     * @param ysBusinessBudgetDto 默认不传任何参数，全部发布
     * @return result
     */
    Boolean releaseData(YsBusinessBudgetDTO ysBusinessBudgetDto);

    /**
     * 查询修订记录列表
     * @param ysBusinessBudgetDto 查询条件
     * @return result
     */
    PageInfo<YsModifyRecordVO> getModifyRecordList(YsBusinessBudgetDTO ysBusinessBudgetDto);

    /**
     * 撤销
     * @param dto 传入id
     * @return result
     */
    Boolean revokeRecord(NumAndYardDTO dto);

    /**
     * 导出
     * @param response response
     * @param dto 查询条件
     */
    void exportExcelYsManageBudget(HttpServletResponse response, YsBusinessBudgetDTO dto);
}
